---
title: clsProviderServiceContractInfo
summary: API reference for clsProviderServiceContractInfo.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-21
library: SAIF.Business.View.Provider
reference_type: embedded
---

# clsProviderServiceContractInfo

`clsProviderServiceContractInfo` represents one service contract for a provider location from `PROVIDER_SERVICE_CONTRACT`. When a contract carries a non-blank plan ID, it is decorated with `MCOPlanInfo` in the same way `clsMCOProvider` is, subject to the same plan-match validation. Its visibility in a loaded list is governed by an offset window applied at the owning list's construction time, not by a property on this type itself.

## Purpose
- Carries the effective/expiration date window and terms for one provider service contract.
- Is decorated with matching `MCOPlanInfo` when a non-blank plan ID is present, validated the same way MCO enrollments are ([BR-MCO-001](../../business-rules.md#br-mco-001-mco-plan-must-match-the-assigned-plan-id)).
- Applies the shared date-window evaluation pattern to determine whether the contract is currently in effect ([BR-DATE-001](../../business-rules.md#br-date-001-dated-records-are-in-effect-within-their-date-window)).

## Context
- Namespace: `SAIF.Business.View.Provider`
- Assembly/package: `SAIF.Business.View.Provider` (embedded/project-compiled); also distributed as the NuGet package `SAIF.BOF.Business.View.Provider`.

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `ProviderLocationID` | `ReadOnly Property ProviderLocationID As Decimal` | Identifies the location this service contract applies to. |
| `PlanID` | `ReadOnly Property PlanID As String` | The MCO plan identifier for this contract, if any; when non-blank it is checked against the attached `MCOPlanInfo` ([BR-MCO-001](../../business-rules.md#br-mco-001-mco-plan-must-match-the-assigned-plan-id)). |
| `Plan` | `ReadOnly Property Plan As MCOPlanInfo` | The plan detail object attached via `SetPlan` when `PlanID` is non-blank. |
| `EffectiveDate` | `ReadOnly Property EffectiveDate As Date` | Date from which this contract applies (`eff_date`); also the ordering key for the owning list (`ORDER BY eff_date desc`). |
| `ExpirationDate` | `ReadOnly Property ExpirationDate As Date` | Date after which this contract no longer applies (`exp_date`), if one exists. |
| `IsActive` | `ReadOnly Property IsActive As Boolean` | True when the contract is currently within its effective/expiration window ([BR-DATE-001](../../business-rules.md#br-date-001-dated-records-are-in-effect-within-their-date-window)). |
| `IsExpired` | `ReadOnly Property IsExpired As Boolean` | True when the contract's expiration date is in the past. |
| `HasExpirationDate` | `ReadOnly Property HasExpirationDate As Boolean` | True when an expiration date is set for this contract. |
| `IsInEffect` | `Function IsInEffect(asOfDate As Date) As Boolean` | True when the given date is on/after the effective date and, if an expiration date exists, on/before it ([BR-DATE-001](../../business-rules.md#br-date-001-dated-records-are-in-effect-within-their-date-window)). |
| `SetPlan` | `Sub SetPlan(plan As MCOPlanInfo)` | Attaches plan detail to this contract, throwing `ApplicationException("MCO plan submitted does not match plan assigned.")` if the plan's ID does not match `PlanID` ([BR-MCO-001](../../business-rules.md#br-mco-001-mco-plan-must-match-the-assigned-plan-id)). |

## Behavioral notes
- OP-12: contracts are loaded and, when a plan ID is present, decorated by calling `SetPlan` during `clsProviderServiceContractList`'s constructor, applying [BR-MCO-001](../../business-rules.md#br-mco-001-mco-plan-must-match-the-assigned-plan-id) exactly as `clsMCOProviderList` does for enrollments.
- Visibility of a given contract in a loaded list depends on the offset window applied by the owning `clsProviderServiceContractList` constructor, not on any property of this type ([BR-PSVC-001](../../business-rules.md#br-psvc-001-service-contracts-are-limited-to-the-offset-window)).

## Constraints and usage notes
- Read-only data holder with no create/update/delete surface; represents contract terms as recorded, not an editable object.
- A contract whose plan data does not match the plan lookup will throw during list construction, not lazily — callers should be prepared for exceptions when first loading `clsProviderLocation.ServiceContracts` ([BR-MCO-001](../../business-rules.md#br-mco-001-mco-plan-must-match-the-assigned-plan-id)).*

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- SAIF.Business.View.Provider/clsProviderServiceContract.vb
